package com.kjlink.internal.report4vue.config;

import com.fasterxml.jackson.databind.DeserializationFeature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 描述:
 * 前端传入的枚举值，若为空字符串，则自动转换为null
 *
 * @author Vic.xu
 * @since 2024-12-06 17:41
 */
@Configuration
public class JacksonConfig {
    private static final Logger LOGGER = LoggerFactory.getLogger(JacksonConfig.class);
    /*
    1. 前端的json中的某个枚举值为空字符串
    2. 后端@RequestBody   对象中使用XxxEnum枚举值 接收报错
    3. 结合你上面说的，设置 ObjectMapper 设置枚举类型空字符串转换为 null
    4. 我不想new ObjectMapper 去设置，这样会覆盖springboot 原本设置的 ObjectMapper 的属性
    5. 我想 把springboot中设置的 ObjectMapper  保留原来的设置的基础上，设置枚举类型空字符串转换为 null
     */

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
        return builder -> builder.featuresToEnable(
                DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
    }


}
